#ifndef GAMEDATAMODEL_H
#define GAMEDATAMODEL_H

#include <QObject>

//#include <card.h>
class Card;
typedef QList<Card*> Cards;

/** Модель данных игры: поле с карточками.
 *
 * @author Василий Почкаенко*/
class GameDataModel : public QObject{
	Q_OBJECT
	/** Карточки.*/
	Q_PROPERTY(QList<QObject*> cardsQML READ cardsQML NOTIFY cardsChange)
public:
	explicit GameDataModel(
	    uint quantaCards = 36,   //!< Количество карточек на поле.
	                             //!< Если не кратно 2, то будет уменьшено.
	    uint quantaVariants = 4, //!< Количество различных вариантов символов карточек.
	                             //!< Если quantaVariants > quantaCards / 2, то будет уменьшено до quantaCards / 2.
	    QObject *parent = 0);
	
	/** Карточки.*/
	const QList<QObject *> &cardsQML() const;
	/** Карточки.*/
	const QList<Card*> &cards() const;
signals:
	/** Изменились карточки.*/
	void cardsChange();
	
public slots:
	
private:
	/** Карточки на игровом поле*/
	Cards m_cards;
	
	void createCards(uint quantaCards, uint quantaVariants);
	void confuseCards();
};

#endif // GAMEDATAMODEL_H
